/**
 * Created by DING on 2025/3/24.
 * */
#include "Task3.h"

BaseObject *createTask3() {
    return new Task3();
}

void destroyTask3(BaseObject *p) {
    SAFE_DELETE(p);
}

Task3::Task3(){
}

Task3::~Task3() {
}

/* 如果使用了DDS_Reader或者DDS_Writer，则对应的input或者output前64个字节为DataFormat head首部 */
void Task3::onCompute(buffer_table_t *input, buffer_table_t *output) {
LOG_INFO("(%lld)onCompute:%s", this->outputSequence, this->instanceName.c_str());

  /** 获取端口数据指针示例
   * const char *src0 = input->list[0]->data;
   * char *dest0 = output->list[0]->data;
   * */
// 定义 64 字节的二进制数据
    uint8_t hex_data[] = {
            0x5A, 0x5A, 0xAA, 0x55, 0x03, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
            0xFC, 0x46, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x09,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    };


    // 获取 output 的数据指针
    if (output->list[0] != nullptr && output->list[0]->data != nullptr) {
        // 确保目标缓冲区足够存储数据
        size_t copy_size = sizeof(hex_data);

        // 复制数据到 output->list[0]->data
        memcpy(output->list[0]->data, hex_data, copy_size);

        LOG_INFO("Successfully copied %zu bytes to output->list[0]->data", copy_size);
    } else {
        LOG_ERROR("Output buffer is null, cannot copy data!");
    }

  /** 计算示例
   * if (input->list[0]->valid) {
   *     memcpy(dest0, src0, std::min(input->list[0]->len, output->list[0]->len));
   *   }
   * */
}
